﻿using Project_veilingsite.Models;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Security;

namespace Project_veilingsite.Controllers
{
     [Authorize(Roles = "administrator")]
    public class ChangeRolController : Controller
    {
        private dtb_Veilingssite _db = new dtb_Veilingssite();
       

        [HttpGet]
        public ActionResult Index()
        {
            try
            {
               var model = TempData["RolesModel"];//het meegeven van het model (kom van de home controller)
                if (model == null) //als er geen model werd meegegeven haal dan alle veilingen op geordend op datum
                {
                    var RolesList = new List<string>();
                    var RolesQuery = Roles.GetAllRoles();
                    RolesList.AddRange(RolesQuery.Distinct());
                    ViewBag.roles = new SelectList(RolesList);
                    

                    ViewBag.Username = TempData["User"];
                    
                    ViewBag.Rol = "Nog niet aan een rol toegekend";
                    return View();
                }
                else
                {
                    var RolesList = new List<string>();
                    var RolesQuery = Roles.GetAllRoles();
                    RolesList.AddRange(RolesQuery.Distinct());
                    ViewBag.roles = new SelectList(RolesList);

                    ViewBag.Username = TempData["User"];
                   ViewBag.Rol = model;
                    return View();
                }
               
            }
            catch (Exception e)
            {
                //Server.MapPath("~") = de root-map van het project
                string pad = Server.MapPath("~") + "/LoggingTracing/tracingLogging.txt";
                if (!System.IO.File.Exists(pad))
                {
                    System.IO.File.Create(pad);
                }

                using (StreamWriter swTracing = System.IO.File.AppendText(pad))
                {
                    swTracing.Write("\n\nDatum/Tijd: " + DateTime.Now + "\nException: " + e.StackTrace);
                }
            }

            return null;
        }

           [HttpPost]
         [MultiButton(MatchFormKey="action", MatchFormValue="Voeg rol toe")]
        public ActionResult Feedback(string roles, string username)
        {
            try
            {
                if (!string.IsNullOrEmpty(roles)||!roles.Equals(""))
                {

                    if(!string.IsNullOrEmpty(username))
                    {
                        try
                        { 
                            Roles.AddUserToRole(username, roles);
                            ViewData["title"] = "Rol werd toegekend";
                            ViewData["header"] = "De rol werd met succes toegekend";
                            ViewData["message"] = "";
                            return View();
                        }
                        catch(Exception)
                        {
                            ViewData["title"] = "Rol werd niet toegekend";
                            ViewData["header"] = "Deze rol is reeds toegekend";
                            ViewData["message"] = "";
                            return View();

                        }
                    }
                    else
                    {
                        ViewData["title"] = "Rol werd niet toegekend";
                        ViewData["header"] = "Helaas.Er is iets fout gelopen. Uw rol werd niet toegekend";
                        ViewData["message"] = "";
                        return View();
                    }
                }
                else
                {
                    ViewData["title"] = "Rol werd niet toegekend";
                    ViewData["header"] = "Helaas, er is iets fout gelopen. Uw rol werd niet toegekend";
                    ViewData["message"] = "U bent vergeten een rol aan te duiden";
                    return View();
                }
            }
            catch (Exception e)
            {
                //Server.MapPath("~") = de root-map van het project
                string pad = Server.MapPath("~") + "/LoggingTracing/tracingLogging.txt";
                if (!System.IO.File.Exists(pad))
                {
                    System.IO.File.Create(pad);
                }

                using (StreamWriter swTracing = System.IO.File.AppendText(pad))
                {
                    swTracing.Write("\n\nDatum/Tijd: " + DateTime.Now + "\nException: " + e.StackTrace);
                }
            }

            return null;
        }
         [HttpPost]
         [MultiButton(MatchFormKey = "action", MatchFormValue = "Verwijder rol")]
        public ActionResult FeedbackDelete(string roles, string username)
        {
            try
            {
                if (!string.IsNullOrEmpty(roles) || !roles.Equals(""))
                {

                    if (!string.IsNullOrEmpty(username))
                    {
                        try
                        {
                            Roles.RemoveUserFromRole(username,roles);
                            ViewData["title"] = "Rol werd verwijderd";
                            ViewData["header"] = "De rol werd met succes verwijderd";
                            ViewData["message"] = "";
                            return View();
                        }
                        catch (Exception)
                        {
                            ViewData["title"] = "Rol werd niet verwijder";
                            ViewData["header"] = "De rol die u heeft aangeduid is reeds verwijderd";
                            ViewData["message"] = "";
                            return View();

                        }
                    }
                    else
                    {
                        ViewData["title"] = "Rol werd niet verwijderd";
                        ViewData["header"] = "Helaas.Er is iets fout gelopen. De rol werd niet verwijderd";
                        ViewData["message"] = "";
                        return View();
                    }
                }
                else
                {
                    ViewData["title"] = "De rol werd niet verwijderd";
                    ViewData["header"] = "Helaas, er is iets fout gelopen. ";
                    ViewData["message"] = "U bent vergeten een rol aan te duiden";
                    return View();
                }
            }
            catch (Exception e)
            {
                //Server.MapPath("~") = de root-map van het project
                string pad = Server.MapPath("~") + "/LoggingTracing/tracingLogging.txt";
                if (!System.IO.File.Exists(pad))
                {
                    System.IO.File.Create(pad);
                }

                using (StreamWriter swTracing = System.IO.File.AppendText(pad))
                {
                    swTracing.Write("\n\nDatum/Tijd: " + DateTime.Now + "\nException: " + e.StackTrace);
                }
            }

            return null;
        }

    }
   
}
